//该文件用于创建Vuex中最为核心的store

// 需要再 main.js  中引入
import Vue from 'vue'
//引入Vuex store的引入顺序问题
import Vuex from 'vuex'
//应用Vuex插件
Vue.use(Vuex)

// https://github.com/vuejs/vuex
//准备actions——用于响应组件中的动作


/*
    actions 没有业务逻辑，可以跳过，直接使用 commit 提交给 mutation：this.$store.commit('JIA',this.n)
    正常顺序：actions-->mutations-->this.$store.dispatch('jiaOdd',this.n)
*/
const actions = {
    /*
    * context ==>迷你版的 store
    * */
    /*

    jia(context,value){
        console.log('actions中的jia被调用了')
        context.commit('JIA',value)
    },
    jian(context,value){
        console.log('actions中的jian被调用了')
        context.commit('JIAN',value)
    }, */
    /*
    * 从context中获取数据
    * */
    jiaOdd(context, value) {
        console.log('actions中的  jiaOdd 被调用了')
        if (context.state.sum % 2) {
            context.commit('JIA', value)
        }
    },
    jiaWait(context, value) {
        console.log('actions中的jiaWait被调用了')
        setTimeout(() => {
            context.commit('JIA', value)
        }, 500)
    }
}
//准备mutations——用于操作数据（state）,直接帮你操作数据
const mutations = {
    JIA(state, value) {
        console.log('mutations中的JIA被调用了',value)
        state.sum += value
    },
    JIAN(state, value) {
        console.log('mutations中的JIAN被调用了')
        state.sum -= value
    }
}

//准备state——用于存储数据,初始值
const state = {
    sum:0, //当前的和
    school:'尚硅谷',
    subject:'前端'
}
//准备getters——用于将state中的数据进行加工

const getters = {
    bigSum(state){
        return state.sum*10
    }
}

//创建并暴露store
export default new Vuex.Store({
    actions,
    mutations,
    state,
    getters
})